package pattern;

/**
 * 
 * @author jieji
 *
 */
/**
 * 因为每个具体工厂类只负责创建产品，没有简单工厂中的逻辑判断，因此符合单一职责原则。
 * 与简单工厂模式不同，工厂方法并不使用静态工厂方法，可以形成基于继承的等级结构。
 * 新增一种产品时，只需要增加相应的具体产品类和相应的工厂子类即可，相比于简单工厂模式需要修改判断逻辑而言，工厂方法模式更符合开-闭原则。
 */
public class FactoryMethod {

	public static void main(String[] args) {
		AbstractFactoryMethod afm = new AFactoryMethod();

	}

}

/**
 * 你只管关心具体的工厂,而不用关心产品
 *
 */
abstract class AbstractFactoryMethod {

}

class AFactoryMethod extends AbstractFactoryMethod {
	public A create() {
		return new A();
	}
}

class BFactoryMethod extends AbstractFactoryMethod {
	public B create() {
		return new B();
	}
}

class A {

}

class B {

}
